home *** CD-ROM | disk | FTP | other *** search
/ BMUG PD-ROM B4 / PD-ROM B4.iso / Entertainment / Strategy / Robots / bot 1.0.1 / Tutorial / BASIC / Zapper < prev    next >
Text File  |  1991-06-26  |  2KB  |  92 lines

  1. !
  2. ! Zapper
  3. !
  4. ! This bot recognizes when it takes damage, and it tries to run
  5. ! away when it gets hit.
  6. ! Its primary weapon is a standard gun.  However, it has a
  7. ! secondary laser which it fires at the corners of the arena,
  8. ! just in case any bots are lurking there.
  9. !
  10.  
  11. #DATA
  12.  
  13. EQU INCR    23
  14.  
  15. DEF damage
  16. DEF scanAt
  17. DEF xx                  ! Destination coordinates
  18. DEF yy
  19. DEF goX                 ! Prepared velocities for running away
  20. DEF goY
  21. DEF temp
  22.  
  23. #CODE BASIC
  24.     
  25.     Gosub CalcPos       ! Pick a point to go to
  26.     goX = goX * 20      ! Prepare to accelerate an awful lot
  27.     goY = goY * 20
  28.     
  29. :Initialize
  30.     damage = $DAMAGE    ! Remember current damage level
  31.     
  32.     While (damage <> $DAMAGE)   ! Until I get hit
  33.       begin
  34.         scanAt = scanAt + INCR
  35.         Scan Angle scanAt
  36.         While ($FOUND <> 0)     ! Until I lose sight of enemy
  37.           begin
  38.             Fire Weapon 1, Angle $ANGLE
  39.             If (damage <> $DAMAGE) Then Goto Runaway
  40.                     ! Jump out if damage is taken while locked
  41.             Scan Angle $ANGLE
  42.           end
  43.       end
  44.     
  45.     Goto Runaway
  46.     
  47. :RAway
  48.     Gosub CalcVel
  49.     goX = goX * 2       ! Move there twice as fast.
  50.     goY = goY * 2
  51. :RUNAWAY
  52.     VELOCITY GOX, GOY
  53.     If (xx-$XLOC > 30) Then Goto RAway
  54.     If (xx-$XLOC < -30) Then Goto RAway
  55.     If (yy-$YLOC > 30) Then Goto RAway
  56.     If (yy-$YLOC < -30) Then Goto RAway
  57.     
  58.     Velocity 0, 0
  59.     
  60.     Gosub CalcPos       ! Pick a point to go to
  61.     goX = goX * 20      ! Prepare to accelerate an awful lot
  62.     goY = goY * 20
  63.     
  64.     ! Before returning to the scan loop, Do a quick zap into
  65.     ! the four corners of the arena.  However, if the battery
  66.     ! has been destroyed, don't bother.
  67.     
  68.     If ($BATTERY == 0) Then Goto Initialize
  69.     
  70.     damage = $DAMAGE
  71.     Fire Weapon 2, Angle ArcTan(-$YLOC, -$XLOC)
  72.         If (damage <> $DAMAGE) Then Goto Runaway
  73.     Fire Weapon 2, Angle ArcTan(-$YLOC, 256-$XLOC)
  74.         If (damage <> $DAMAGE) Then Goto Runaway
  75.     Fire Weapon 2, Angle ArcTan(256-$YLOC, 256-$XLOC)
  76.         If (damage <> $DAMAGE) Then Goto Runaway
  77.     Fire Weapon 2, Angle ArcTan(256-$YLOC, -$XLOC)
  78.         If (damage <> $DAMAGE) Then Goto Runaway
  79.     
  80.     Goto Initialize     ! Start all over again.
  81.  
  82.  
  83. :CalcPos
  84.     xx = Random(215) + 20
  85.     yy = Random(215) + 20
  86. :CalcVel
  87.     goX = xx - $XLOC
  88.     goY = yy - $YLOC
  89.   Return
  90.  
  91. #END
  92.